"""
text ： 必填。要写入二维码的文本。
options ：可选。参数字典，可选项为：
    format ：二维码码格式，可选值 见上文。默认为 "QRCode" 。
    w ：生成图像宽度，整数。默认 0 为自动设为最小宽度。
    h ：生成图像高度，整数。默认 0 为自动设为最小高度。
    quiet_zone ：二维码四周的空白边缘宽度，整数。默认 -1 为自动调节。
    ec_level ：纠错等级，整数。默认 -1 。可选值： -1:自动, 1:7%,0:15%,3:25%, 2:30%。仅在这些格式下生效：Aztec、PDF417、QRCode 。
"""
import json
import base64
from io import BytesIO
from PIL import Image
import requests

def generate_qrcode(text):
    url = "http://127.0.0.1:8282/api/qrcode"
    data = {
        "text": text,
        "options": {
            "format": "QRCode",
            "w": 500,
            "h": 500,
            "quiet_zone": -1,
            "ec_level": -1,
        }
    }
    headers = {"Content-Type": "application/json"}
    data_str = json.dumps(data)
    response = requests.post(url, data=data_str, headers=headers)
    response.raise_for_status()
    res_dict = json.loads(response.text)
    return res_dict

def main():
    text = "我是谁，我在哪，我干嘛"
    data = generate_qrcode(text)
    if data["code"] == 100:
        image_bytes = base64.b64decode(data['data'])
        image_data = BytesIO(image_bytes)

        image = Image.open(image_data)
        image.show()

if __name__ == "__main__":
    main()